<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
  </head>
  <body>
    <script>
      //1 fill(ele,start,end)将一定范围索引的数组元素内容填充为单个指定的值
      // 参数1：用来填充的值
      // 参数2：被填充的起始索引
      // 参数3(可选)：被填充的结束索引，默认为数组末尾
      // 留头不留尾
      var arr = ['诸葛亮', '蒙多', '亚索', '奶妈', '男枪']
      arr.fill('废物', 1, 3)
      console.log(arr)
      //2 .copyWithin()将一定范围索引的数组元素修改为此数组另一指定范围索引的元素。
      // 参数1：被修改的起始索引
      // 参数2：被用来覆盖的数据的起始索引
      // 参数3(可选)：被用来覆盖的数据的结束索引，默认为数组末尾
      console.log([1, 2, 3, 4].copyWithin(0, 2, 4)) // [3, 4, 3, 4]
      console.log([5, 6, 7, 8, 9].copyWithin(1, 2, 4)) //[5,7,8,8,9]

      console.log(
        ['11', '22', '88', '99', '66', '55', '44'].copyWithin(2, 3, 5)
      ) //['11','22','99','66','66','55','44']
      //3  flat 嵌套数组转一维数组
      var arr2 = ['11', ['33', '44', ['55', '66', ['99', '88']]]]
      // 指定层数
      console.log(arr2.flat(2))
      // Infinity  不管嵌套多少层
      console.log(arr2.flat(Infinity))
      // flatMap()先对数组中每个元素进行了的处理，再对数组执行 flat() 方法。
      // 参数1：遍历函数，该遍历函数可接受3个参数：当前元素、当前元素索引、原数组
      // 参数2：指定遍历函数中 this 的指向
      console.log(
        [1, 2, 3].flatMap(function(n, i, arr) {
          console.log(n, i, arr)
          return n * 2
        })
      ) // [2, 4, 6]
      //
    </script>
  </body>
</html>
